补码究竟是什么?
做而论道_CS:
十进制数,换算到二进制补码,要分两部分:
正数,直接换算到二进制,就是补码了。
负数,则用二进制计算【0-X】。
用二进制相减,对老外来说,就太难了!
掰出脚趾头,也算不清二进制啊!
没有办法,只好编造一套谎言:
机器数真值符号位原码反码补码正数三码相同
负数取反加一符号位不变模符号位也参加计算
这些,都是毫无道理的,只能说是规定。
实际上,二进制数,也是数,根本就没有什么符号位!
你看十进制,两位数,范围是:0 ~ 99。
最大值是 +99。
将有:26 + 99 = (一百) 25
26 - 1 = 25
如果仍然保持两位数,这两种算法就相同。
即:
+99,就是-1;
加法,就是减法。
---------------
在八位二进制中,最大值:
1111 1111 (即 255)。
也就能当-1 来使用。
- 1 的补码,就是 1111 1111。
你用二进制加法,算一下:
26 + 255 = 和,
保存八位的和,肯定就是 25。
---------------
用最大值,代替-1,对任意进制,都适用。
这是数学中普遍规律。
不仅仅是二进制才有。
因此,补码,就是一般的数学规律。
并不是计算机专家发明的。
另外,原码反码,都是荒谬的,不值一提。
计算机,根本就不用原码反码。
|